//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)


//用于创建vuex中的store

//准备actions对象——响应组件中用户的动作  服务员
const actions = {
    // jia: function (context, value) {
    //     console.log('action的jia方法被调用了' + context, value);
    //     context.commit('JIA', value)

    // },
    // jian: function (context, value) {
    //     console.log('action的jian方法被调用了' + context, value);
    //     context.commit('JIAN', value)

    // },没逻辑可以不用写直接提交
    //context上下文
    //dispatch处理部分事情
    //考虑到事情复杂
    odd: function (context, value) {
        if (context.state.count % 2 == 0) {
            console.log('action的odd方法被调用了' + context, value);
            context.dispatch('demo', value)

        }
    },
    demo: function (context, value) {
        console.log("我帮odd处理了一些事情然后交给demo2");
        context.dispatch('demo2', value)
    },
    demo2: function (context, value) {
        console.log("我帮demo处理了一些事情o2");
        context.commit('ODD', value);
    },

    waitadd: function (context, value) {
        console.log('action的waitadd方法被调用了' + context, value);
        setTimeout(() => {

            context.commit('WAITADD', value)
        }, 500)


    }
}
//准备mutations对象——修改state中的数据  后厨
const mutations = {
    //便于区分
    JIA: function (state, value) {
        console.log(state, value);
        state.count += value
    },
    JIAN: function (state, value) {
        console.log(state, value);
        state.count -= value
    },
    ODD: function (state, value) {
        console.log(state, value);
        state.count += value
    },
    WAITADD: function (state, value) {
        console.log(state, value);
        state.count += value
    }
}
//准备state对象——保存具体的数据
const state = {
    count: 0,
    school: '前端',
    name: 'lili'
}
const getters = {
    bigSum(state) {
        return state.count * 10
    }
}

//创建并暴露store
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters
})